import request from '@/util/axios';
import * as T from './orgManagement_type'

// 统一管理接口
enum API {
    OrgList = '/api/system/org/tree', // 组织树
    SubOrgList = '/api/system/org/sub/list', // 下级组织列表
    OrgDetail = '/api/system/org/detail', // 组织详情
    CreateOrg = '/api/system/org/create', // 创建组织
    UpdateOrg = '/api/system/org/update', // 组织更新
    DelOrg = '/api/system/org/delete', // 组织删除
    OutOrgList = '/api/system/org/list' // 组织列表查询

}

// 获取组织树
export async function org_tree() {
    try {
      return await request.get(API.OrgList);
    } catch (error) {
      console.error('获取组织列表时发生错误：', error);
      throw new Error('无法获取组织列表，请稍后重试。');
    }
  }

// 获取下级组织树
export async function org_sub_list(params:T.SubOrgItem) {
    try {
      return await request.get(API.SubOrgList, {params});
    } catch (error) {
      console.error('获取下级组织列表时发生错误：', error);
      throw new Error('无法获取下级组织列表，请稍后重试。');
    }
  }

// 获取组织详情
export async function org_detail(params:any) {
    try {
      return await request.get(API.OrgDetail, {params});
    } catch (error) {
      console.error('获取组织详情时发生错误：', error);
      throw new Error('无法获取组织详情，请稍后重试。');
    }
  }

// 创建组织
export async function org_create(params:T.CreateOrgItem) {
  try {
    return await request.post(API.CreateOrg, params);
  } catch (error) {
    console.error('创建组织时发生错误：', error);
    throw new Error('无法创建组织，请稍后重试。');
  }
}

// 更新组织
export async function org_update(params:T.CreateOrgItem) {
  try {
    return await request.post(API.UpdateOrg, params);
  } catch (error) {
    console.error('更新组织时发生错误：', error);
    throw new Error('无法更新组织，请稍后重试。');
  }
}


// 删除组织
export async function org_delete(params:T.DelOrgItem) {
  try {
    return await request.get(API.DelOrg, {params});
  } catch (error) {
    console.error('获取组织详情时发生错误：', error);
    throw new Error('无法获取组织详情，请稍后重试。');
  }
}

// 外部机构查询
export async function out_org_list(params: T.OutOrgItem) {
  try {
    return await request.get(API.OutOrgList, {params});
  } catch (error) {
    console.error('获取外部机构时发生错误：', error);
    throw new Error('无法获取外部机构，请稍后重试。');
  }
}
